package com.welson.restfultoolx.service;

import com.welson.restfultoolx.model.ApiInfo;
import com.welson.restfultoolx.model.SearchOptions;

import java.util.List;

/**
 * 搜索引擎接口
 * 提供高性能的API搜索功能
 */
public interface SearchEngine {
    
    /**
     * 搜索API
     * @param query 搜索关键词
     * @param options 搜索选项
     * @return 匹配的API列表
     */
    List<ApiInfo> search(String query, SearchOptions options);
    
    /**
     * 构建搜索索引
     * @param apis API信息列表
     */
    void buildIndex(List<ApiInfo> apis);
    
    /**
     * 更新索引中的API信息
     * @param api API信息
     * @param operation 操作类型
     */
    void updateIndex(ApiInfo api, IndexOperation operation);
    
    /**
     * 清空索引
     */
    void clearIndex();
    
    /**
     * 获取索引大小
     * @return 索引中的API数量
     */
    int getIndexSize();
    
    /**
     * 检查索引是否为空
     * @return 索引是否为空
     */
    boolean isIndexEmpty();
    
    /**
     * 获取搜索建议
     * @param query 部分查询字符串
     * @param maxSuggestions 最大建议数量
     * @return 搜索建议列表
     */
    List<String> getSuggestions(String query, int maxSuggestions);
    
    /**
     * 索引操作枚举
     */
    enum IndexOperation {
        ADD,    // 添加
        UPDATE, // 更新
        REMOVE  // 删除
    }
}